Modified lines:  1, 3
Added line:  4, 5, 6, 7, 8, 9, 10, 84
Removed line:  None
Generated by diff2html
© Yves Bailly, MandrakeSoft S.A. 2001
diff2html is licensed under the GNU GPL.

  DiffViewer/output/AnalysisResults.java//AnalysisResults.java_000     DiffViewer/output/AnalysisResults.java//AnalysisResults.java_001
  126 lines
5326 bytes
Last modified : Mon May 14 23:47:19 2012

    134 lines
5544 bytes
Last modified : Mon May 14 23:47:19 2012

1 //Time : 2012-04-12 06:34:46.721   1 //Time : 2012-04-12 06:35:05.964
2 //Files Open : /mcmutton/src/main/java/edu/ucsd/salud/mcmutton/BugHunt.java /pvekris/src/main/java/energy/interproc/CtxSensLocking.java /pvekris/src/main/java/energy/analysis/WakeLockManager.java /pvekris/src/main/java/energy/analysis/Opts.java /pvekris/src/main/java/energy/analysis/SpecialConditions.java /pvekris/src/main/java/energy/analysis/AnalysisResults.java /pvekris/src/main/java/energy/analysis/ComponentManager.java   2 //Files Open : /mcmutton/src/main/java/edu/ucsd/salud/mcmutton/BugHunt.java /pvekris/src/main/java/energy/interproc/CtxSensLocking.java /pvekris/src/main/java/energy/analysis/WakeLockManager.java /pvekris/src/main/java/energy/analysis/Opts.java /pvekris/src/main/java/energy/analysis/SpecialConditions.java /pvekris/src/main/java/energy/analysis/AnalysisResults.java /pvekris/src/main/java/energy/analysis/ComponentManager.java
3 package energy.analysis;   3 /*AST Changes :
      4 CHANGE MethodDeclaration to MethodDeclaration = 1
      5 INSERT ExpressionStmt = 1
      6 changes = 1
      7 changes to method processResults = 1
      8 inserts = 1
      9 public method declarations = 1
      10 */package energy.analysis;
4 import java.util.EnumMap;   11 import java.util.EnumMap;
5 import java.util.HashMap;   12 import java.util.HashMap;
6 import java.util.HashSet;   13 import java.util.HashSet;
7 import java.util.Map;   14 import java.util.Map;
8 import java.util.Map.Entry;   15 import java.util.Map.Entry;
9 import java.util.Set;   16 import java.util.Set;
10 import com.ibm.wala.types.FieldReference;   17 import com.ibm.wala.types.FieldReference;
11 import com.ibm.wala.util.collections.Pair;   18 import com.ibm.wala.util.collections.Pair;
12 import energy.components.Component;   19 import energy.components.Component;
13 import energy.interproc.CompoundLockState;   20 import energy.interproc.CompoundLockState;
14 import energy.interproc.SingleLockState;   21 import energy.interproc.SingleLockState;
15 import energy.util.E;   22 import energy.util.E;
16 public class AnalysisResults {   23 public class AnalysisResults {
17   private HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>> resultStuff=null;   24   private HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>> resultStuff=null;
18 public class ComponentResult {   25 public class ComponentResult {
19     HashMap<String,CompoundLockState> callBackExitStates;   26     HashMap<String,CompoundLockState> callBackExitStates;
20     public ComponentResult(){   27     public ComponentResult(){
21       callBackExitStates=new HashMap<String,CompoundLockState>();   28       callBackExitStates=new HashMap<String,CompoundLockState>();
22     }   29     }
23   }   30   }
24   /**   31   /**
25  * The constructor   32  * The constructor
26  */   33  */
27   AnalysisResults(){   34   AnalysisResults(){
28     resultStuff=new HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>>();   35     resultStuff=new HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>>();
29     callBackResultMap=new HashMap<Pair<String,String>,EnumMap<LockUsage,Integer>>();   36     callBackResultMap=new HashMap<Pair<String,String>,EnumMap<LockUsage,Integer>>();
30   }   37   }
31   int threadCount=0;   38   int threadCount=0;
32   int activityCount=0;   39   int activityCount=0;
33   int lockThreads=0;   40   int lockThreads=0;
34   int nolockThreads=0;   41   int nolockThreads=0;
35   int unlockThreads=0;   42   int unlockThreads=0;
36   int lockunlockThreads=0;   43   int lockunlockThreads=0;
37   public enum LockUsage { LOCKING, UNLOCKING, NOLOCKING, LOCKUNLOCK, EMPTY, UNKNOWN_STATE, FULL_UNLOCKING}   44   public enum LockUsage { LOCKING, UNLOCKING, NOLOCKING, LOCKUNLOCK, EMPTY, UNKNOWN_STATE, FULL_UNLOCKING}
38   private Map<Pair<String,String>,EnumMap<LockUsage,Integer>> callBackResultMap;   45   private Map<Pair<String,String>,EnumMap<LockUsage,Integer>> callBackResultMap;
39   public void registerExitLockState( Component component, Map<String,Map<FieldReference,Set<SingleLockState>>> map){   46   public void registerExitLockState( Component component, Map<String,Map<FieldReference,Set<SingleLockState>>> map){
40     resultStuff.add(Pair.make(component,map));   47     resultStuff.add(Pair.make(component,map));
41     StringBuffer sb=new StringBuffer();   48     StringBuffer sb=new StringBuffer();
42     for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : map.entrySet()) {   49     for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : map.entrySet()) {
43       if (e.getValue().size() > 0) {   50       if (e.getValue().size() > 0) {
44         sb.append(e.getKey() + "\n");   51         sb.append(e.getKey() + "\n");
45         for ( Entry<FieldReference,Set<SingleLockState>> entry : e.getValue().entrySet()) {   52         for ( Entry<FieldReference,Set<SingleLockState>> entry : e.getValue().entrySet()) {
46           sb.append(entry.getKey() + " -> " + entry.getValue().toString());   53           sb.append(entry.getKey() + " -> " + entry.getValue().toString());
47         }   54         }
48       }   55       }
49     }   56     }
50     if (sb.length() > 0) {   57     if (sb.length() > 0) {
51       E.log(1,component.toString() + "\n" + sb.toString());   58       E.log(1,component.toString() + "\n" + sb.toString());
52     }   59     }
53   }   60   }
54   private LockUsage getLockUsage( SingleLockState runState){   61   private LockUsage getLockUsage( SingleLockState runState){
55     if (runState != null) {   62     if (runState != null) {
56       if (runState.isMaybeAcquired() && (!runState.isMaybeReleased())) {   63       if (runState.isMaybeAcquired() && (!runState.isMaybeReleased())) {
57         return LockUsage.LOCKING;   64         return LockUsage.LOCKING;
58       }   65       }
59  else if (!runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {   66  else if (!runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {
60         return LockUsage.EMPTY;   67         return LockUsage.EMPTY;
61       }   68       }
62  else if (runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {   69  else if (runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {
63         return LockUsage.FULL_UNLOCKING;   70         return LockUsage.FULL_UNLOCKING;
64       }   71       }
65  else if (runState.isMaybeReleased()) {   72  else if (runState.isMaybeReleased()) {
66         return LockUsage.UNLOCKING;   73         return LockUsage.UNLOCKING;
67       }   74       }
68  else {   75  else {
69         return LockUsage.UNKNOWN_STATE;   76         return LockUsage.UNKNOWN_STATE;
70       }   77       }
71     }   78     }
72  else {   79  else {
73       return LockUsage.EMPTY;   80       return LockUsage.EMPTY;
74     }   81     }
75   }   82   }
76   public void processResults(){   83   public void processResults(){
      84     System.out.pr=$missing$;
77     for ( Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>> pair : resultStuff) {   85     for ( Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>> pair : resultStuff) {
78       Component component=pair.fst;   86       Component component=pair.fst;
79       String componentName=component.getComponentName();   87       String componentName=component.getComponentName();
80       Map<String,Map<FieldReference,Set<SingleLockState>>> callBackMap=pair.snd;   88       Map<String,Map<FieldReference,Set<SingleLockState>>> callBackMap=pair.snd;
81       for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : callBackMap.entrySet()) {   89       for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : callBackMap.entrySet()) {
82         String callBackName=e.getKey();   90         String callBackName=e.getKey();
83         Pair<String,String> compAndCB=Pair.make(component.toString(),callBackName);   91         Pair<String,String> compAndCB=Pair.make(component.toString(),callBackName);
84         Pair<String,String> abstCompAndCB=Pair.make(componentName,callBackName);   92         Pair<String,String> abstCompAndCB=Pair.make(componentName,callBackName);
85         HashMap<FieldReference,LockUsage> lockUsages=new HashMap<FieldReference,LockUsage>();   93         HashMap<FieldReference,LockUsage> lockUsages=new HashMap<FieldReference,LockUsage>();
86         for ( Entry<FieldReference,Set<SingleLockState>> fs : e.getValue().entrySet()) {   94         for ( Entry<FieldReference,Set<SingleLockState>> fs : e.getValue().entrySet()) {
87           FieldReference field=fs.getKey();   95           FieldReference field=fs.getKey();
88           Set<SingleLockState> sls=fs.getValue();   96           Set<SingleLockState> sls=fs.getValue();
89           SingleLockState sl=SingleLockState.mergeSingleLockStates(sls);   97           SingleLockState sl=SingleLockState.mergeSingleLockStates(sls);
90           LockUsage lockUsage=getLockUsage(sl);   98           LockUsage lockUsage=getLockUsage(sl);
91           lockUsages.put(field,lockUsage);   99           lockUsages.put(field,lockUsage);
92           EnumMap<LockUsage,Integer> enumMap=callBackResultMap.get(abstCompAndCB);   100           EnumMap<LockUsage,Integer> enumMap=callBackResultMap.get(abstCompAndCB);
93           if (lockUsage != LockUsage.EMPTY) {   101           if (lockUsage != LockUsage.EMPTY) {
94             E.log(1,compAndCB.toString() + " :: " + lockUsage.toString());   102             E.log(1,compAndCB.toString() + " :: " + lockUsage.toString());
95           }   103           }
96           updateEnumMap(enumMap,lockUsage);   104           updateEnumMap(enumMap,lockUsage);
97         }   105         }
98       }   106       }
99     }   107     }
100   }   108   }
101   private void updateEnumMap( EnumMap<LockUsage,Integer> enumMap, LockUsage lockUsage){   109   private void updateEnumMap( EnumMap<LockUsage,Integer> enumMap, LockUsage lockUsage){
102     if (enumMap == null) {   110     if (enumMap == null) {
103       enumMap=new EnumMap<LockUsage,Integer>(LockUsage.class);   111       enumMap=new EnumMap<LockUsage,Integer>(LockUsage.class);
104     }   112     }
105     Integer count=enumMap.get(lockUsage);   113     Integer count=enumMap.get(lockUsage);
106     if (count == null) {   114     if (count == null) {
107       count=new Integer(1);   115       count=new Integer(1);
108       enumMap.put(lockUsage,count);   116       enumMap.put(lockUsage,count);
109     }   117     }
110  else {   118  else {
111       enumMap.put(lockUsage,count + 1);   119       enumMap.put(lockUsage,count + 1);
112     }   120     }
113   }   121   }
114   public void outputFinalResults(){   122   public void outputFinalResults(){
115     for ( Entry<Pair<String,String>,EnumMap<LockUsage,Integer>> e : callBackResultMap.entrySet()) {   123     for ( Entry<Pair<String,String>,EnumMap<LockUsage,Integer>> e : callBackResultMap.entrySet()) {
116       Pair<String,String> key=e.getKey();   124       Pair<String,String> key=e.getKey();
117       E.log(1,key.toString());   125       E.log(1,key.toString());
118       EnumMap<LockUsage,Integer> usages=e.getValue();   126       EnumMap<LockUsage,Integer> usages=e.getValue();
119       for ( Entry<LockUsage,Integer> u : usages.entrySet()) {   127       for ( Entry<LockUsage,Integer> u : usages.entrySet()) {
120         LockUsage usage=u.getKey();   128         LockUsage usage=u.getKey();
121         Integer count=u.getValue();   129         Integer count=u.getValue();
122         E.log(1,"--> " + usage.toString() + " :: "+ count.toString());   130         E.log(1,"--> " + usage.toString() + " :: "+ count.toString());
123       }   131       }
124     }   132     }
125   }   133   }
126 }   134 }

Generated by diff2html on Mon May 14 23:48:31 2012
Command-line:
/usr/bin/diff2html DiffViewer/output/AnalysisResults.java//AnalysisResults.java_000 DiffViewer/output/AnalysisResults.java//AnalysisResults.java_001